home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / plaf / basic / BasicSliderUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  20.1 KB  |  926 lines

  1. package javax.swing.plaf.basic;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Dimension;
  6. import java.awt.Graphics;
  7. import java.awt.IllegalComponentStateException;
  8. import java.awt.Insets;
  9. import java.awt.Polygon;
  10. import java.awt.Rectangle;
  11. import java.awt.event.ComponentListener;
  12. import java.awt.event.FocusListener;
  13. import java.beans.PropertyChangeListener;
  14. import java.util.Dictionary;
  15. import java.util.Enumeration;
  16. import javax.swing.JComponent;
  17. import javax.swing.JSlider;
  18. import javax.swing.KeyStroke;
  19. import javax.swing.LookAndFeel;
  20. import javax.swing.SwingUtilities;
  21. import javax.swing.Timer;
  22. import javax.swing.UIManager;
  23. import javax.swing.event.ChangeListener;
  24. import javax.swing.plaf.ComponentUI;
  25. import javax.swing.plaf.SliderUI;
  26.  
  27. public class BasicSliderUI extends SliderUI {
  28.    public final int POSITIVE_SCROLL = 1;
  29.    public final int NEGATIVE_SCROLL = -1;
  30.    public final int MIN_SCROLL = -2;
  31.    public final int MAX_SCROLL = 2;
  32.    protected Timer scrollTimer;
  33.    protected JSlider slider;
  34.    protected Insets focusInsets = null;
  35.    protected Insets insetCache = null;
  36.    protected Rectangle focusRect = null;
  37.    protected Rectangle contentRect = null;
  38.    protected Rectangle labelRect = null;
  39.    protected Rectangle tickRect = null;
  40.    protected Rectangle trackRect = null;
  41.    protected Rectangle thumbRect = null;
  42.    protected int trackBuffer = 0;
  43.    private static final Dimension PREFERRED_HORIZONTAL_SIZE = new Dimension(200, 21);
  44.    private static final Dimension PREFERRED_VERTICAL_SIZE = new Dimension(21, 200);
  45.    private static final Dimension MINIMUM_HORIZONTAL_SIZE = new Dimension(36, 21);
  46.    private static final Dimension MINIMUM_VERTICAL_SIZE = new Dimension(21, 36);
  47.    private transient boolean isDragging;
  48.    protected TrackListener trackListener;
  49.    protected ChangeListener changeListener;
  50.    protected ComponentListener componentListener;
  51.    protected FocusListener focusListener;
  52.    protected ScrollListener scrollListener;
  53.    protected PropertyChangeListener propertyChangeListener;
  54.    private Color shadowColor;
  55.    private Color highlightColor;
  56.    private Color focusColor;
  57.    private static Rectangle unionRect = new Rectangle();
  58.  
  59.    public BasicSliderUI(JSlider var1) {
  60.    }
  61.  
  62.    // $FF: synthetic method
  63.    static boolean access$0(BasicSliderUI var0) {
  64.       return var0.isDragging;
  65.    }
  66.  
  67.    // $FF: synthetic method
  68.    static void access$1(BasicSliderUI var0, boolean var1) {
  69.       var0.isDragging = var1;
  70.    }
  71.  
  72.    protected void calculateContentRect() {
  73.       this.contentRect.x = this.focusRect.x + this.focusInsets.left;
  74.       this.contentRect.y = this.focusRect.y + this.focusInsets.top;
  75.       this.contentRect.width = this.focusRect.width - (this.focusInsets.left + this.focusInsets.right);
  76.       this.contentRect.height = this.focusRect.height - (this.focusInsets.top + this.focusInsets.bottom);
  77.    }
  78.  
  79.    protected void calculateFocusRect() {
  80.       this.focusRect.x = this.insetCache.left;
  81.       this.focusRect.y = this.insetCache.top;
  82.       this.focusRect.width = this.slider.getWidth() - (this.insetCache.left + this.insetCache.right);
  83.       this.focusRect.height = this.slider.getHeight() - (this.insetCache.top + this.insetCache.bottom);
  84.    }
  85.  
  86.    protected void calculateGeometry() {
  87.       this.calculateFocusRect();
  88.       this.calculateContentRect();
  89.       this.calculateThumbSize();
  90.       this.calculateTrackBuffer();
  91.       this.calculateTrackRect();
  92.       this.calculateTickRect();
  93.       this.calculateLabelRect();
  94.       this.calculateThumbLocation();
  95.    }
  96.  
  97.    protected void calculateLabelRect() {
  98.       if (this.slider.getPaintLabels()) {
  99.          if (this.slider.getOrientation() == 0) {
  100.             this.labelRect.x = this.tickRect.x - this.trackBuffer;
  101.             this.labelRect.y = this.tickRect.y + this.tickRect.height;
  102.             this.labelRect.width = this.tickRect.width + this.trackBuffer * 2;
  103.             this.labelRect.height = this.getHeightOfTallestLabel();
  104.          } else {
  105.             this.labelRect.x = this.tickRect.x + this.tickRect.width;
  106.             this.labelRect.y = this.tickRect.y - this.trackBuffer;
  107.             this.labelRect.width = this.getWidthOfWidestLabel();
  108.             this.labelRect.height = this.tickRect.height + this.trackBuffer * 2;
  109.          }
  110.       } else if (this.slider.getOrientation() == 0) {
  111.          this.labelRect.x = this.tickRect.x;
  112.          this.labelRect.y = this.tickRect.y + this.tickRect.height;
  113.          this.labelRect.width = this.tickRect.width;
  114.          this.labelRect.height = 0;
  115.       } else {
  116.          this.labelRect.x = this.tickRect.x + this.tickRect.width;
  117.          this.labelRect.y = this.tickRect.y;
  118.          this.labelRect.width = 0;
  119.          this.labelRect.height = this.tickRect.height;
  120.       }
  121.  
  122.    }
  123.  
  124.    protected void calculateThumbLocation() {
  125.       if (this.slider.getSnapToTicks()) {
  126.          int var1 = this.slider.getValue();
  127.          int var2 = var1;
  128.          int var3 = this.slider.getMajorTickSpacing();
  129.          int var4 = this.slider.getMinorTickSpacing();
  130.          int var5 = 0;
  131.          if (var4 > 0) {
  132.             var5 = var4;
  133.          } else if (var3 > 0) {
  134.             var5 = var3;
  135.          }
  136.  
  137.          if (var5 != 0) {
  138.             if ((var1 - this.slider.getMinimum()) % var5 != 0) {
  139.                float var6 = (float)(var1 - this.slider.getMinimum()) / (float)var5;
  140.                int var7 = Math.round(var6);
  141.                var2 = this.slider.getMinimum() + var7 * var5;
  142.             }
  143.  
  144.             if (var2 != var1) {
  145.                this.slider.setValue(var2);
  146.             }
  147.          }
  148.       }
  149.  
  150.       if (this.slider.getOrientation() == 0) {
  151.          int var8 = this.xPositionForValue(this.slider.getValue());
  152.          this.thumbRect.x = var8 - this.thumbRect.width / 2;
  153.          this.thumbRect.y = this.trackRect.y;
  154.       } else {
  155.          int var9 = this.yPositionForValue(this.slider.getValue());
  156.          this.thumbRect.x = this.trackRect.x;
  157.          this.thumbRect.y = var9 - this.thumbRect.height / 2;
  158.       }
  159.  
  160.    }
  161.  
  162.    protected void calculateThumbSize() {
  163.       Dimension var1 = this.getThumbSize();
  164.       this.thumbRect.setSize(var1.width, var1.height);
  165.    }
  166.  
  167.    protected void calculateTickRect() {
  168.       if (this.slider.getOrientation() == 0) {
  169.          this.tickRect.x = this.trackRect.x;
  170.          this.tickRect.y = this.trackRect.y + this.trackRect.height;
  171.          this.tickRect.width = this.trackRect.width;
  172.          this.tickRect.height = this.getTickLength();
  173.          if (!this.slider.getPaintTicks()) {
  174.             --this.tickRect.y;
  175.             this.tickRect.height = 0;
  176.          }
  177.       } else {
  178.          this.tickRect.x = this.trackRect.x + this.trackRect.width;
  179.          this.tickRect.y = this.trackRect.y;
  180.          this.tickRect.width = this.getTickLength();
  181.          this.tickRect.height = this.trackRect.height;
  182.          if (!this.slider.getPaintTicks()) {
  183.             --this.tickRect.x;
  184.             this.tickRect.width = 0;
  185.          }
  186.       }
  187.  
  188.    }
  189.  
  190.    protected void calculateTrackBuffer() {
  191.       if (this.slider.getPaintLabels() && this.slider.getLabelTable() != null) {
  192.          Component var1 = this.getHighestValueLabel();
  193.          Component var2 = this.getLowestValueLabel();
  194.          if (this.slider.getOrientation() == 0) {
  195.             this.trackBuffer = Math.max(var1.getBounds().width, var2.getBounds().width) / 2;
  196.             this.trackBuffer = Math.max(this.trackBuffer, this.thumbRect.width / 2);
  197.          } else {
  198.             this.trackBuffer = Math.max(var1.getBounds().height, var2.getBounds().height) / 2;
  199.             this.trackBuffer = Math.max(this.trackBuffer, this.thumbRect.height / 2);
  200.          }
  201.       } else if (this.slider.getOrientation() == 0) {
  202.          this.trackBuffer = this.thumbRect.width / 2;
  203.       } else {
  204.          this.trackBuffer = this.thumbRect.height / 2;
  205.       }
  206.  
  207.    }
  208.  
  209.    protected void calculateTrackRect() {
  210.       if (this.slider.getOrientation() == 0) {
  211.          this.trackRect.x = this.contentRect.x + this.trackBuffer;
  212.          this.trackRect.y = this.contentRect.y;
  213.          this.trackRect.width = this.contentRect.width - this.trackBuffer * 2;
  214.          this.trackRect.height = this.thumbRect.height;
  215.       } else {
  216.          this.trackRect.x = this.contentRect.x;
  217.          this.trackRect.y = this.contentRect.y + this.trackBuffer;
  218.          this.trackRect.width = this.thumbRect.width;
  219.          this.trackRect.height = this.contentRect.height - this.trackBuffer * 2;
  220.       }
  221.  
  222.    }
  223.  
  224.    protected ChangeListener createChangeListener(JSlider var1) {
  225.       return new ChangeHandler(this);
  226.    }
  227.  
  228.    protected ComponentListener createComponentListener(JSlider var1) {
  229.       return new ComponentHandler(this);
  230.    }
  231.  
  232.    protected FocusListener createFocusListener(JSlider var1) {
  233.       return new FocusHandler(this);
  234.    }
  235.  
  236.    protected PropertyChangeListener createPropertyChangeListener(JSlider var1) {
  237.       return new PropertyChangeHandler(this);
  238.    }
  239.  
  240.    protected ScrollListener createScrollListener(JSlider var1) {
  241.       return new ScrollListener(this);
  242.    }
  243.  
  244.    protected TrackListener createTrackListener(JSlider var1) {
  245.       return new TrackListener(this);
  246.    }
  247.  
  248.    public static ComponentUI createUI(JComponent var0) {
  249.       return new BasicSliderUI((JSlider)var0);
  250.    }
  251.  
  252.    protected Color getFocusColor() {
  253.       return this.focusColor;
  254.    }
  255.  
  256.    protected int getHeightOfHighValueLabel() {
  257.       Component var1 = this.getHighestValueLabel();
  258.       int var2 = 0;
  259.       if (var1 != null) {
  260.          var2 = var1.getPreferredSize().height;
  261.       }
  262.  
  263.       return var2;
  264.    }
  265.  
  266.    protected int getHeightOfLowValueLabel() {
  267.       Component var1 = this.getLowestValueLabel();
  268.       int var2 = 0;
  269.       if (var1 != null) {
  270.          var2 = var1.getPreferredSize().height;
  271.       }
  272.  
  273.       return var2;
  274.    }
  275.  
  276.    protected int getHeightOfTallestLabel() {
  277.       Dictionary var1 = this.slider.getLabelTable();
  278.       int var2 = 0;
  279.       Component var4;
  280.       if (var1 != null) {
  281.          for(Enumeration var3 = var1.keys(); var3.hasMoreElements(); var2 = Math.max(var4.getPreferredSize().height, var2)) {
  282.             var4 = (Component)var1.get(var3.nextElement());
  283.          }
  284.       }
  285.  
  286.       return var2;
  287.    }
  288.  
  289.    protected Component getHighestValueLabel() {
  290.       Dictionary var1 = this.slider.getLabelTable();
  291.       Component var2 = null;
  292.       if (var1 != null) {
  293.          Enumeration var3 = var1.keys();
  294.          if (var3.hasMoreElements()) {
  295.             int var4;
  296.             int var5;
  297.             for(var4 = (Integer)var3.nextElement(); var3.hasMoreElements(); var4 = Math.max(var5, var4)) {
  298.                var5 = (Integer)var3.nextElement();
  299.             }
  300.  
  301.             var2 = (Component)var1.get(new Integer(var4));
  302.          }
  303.       }
  304.  
  305.       return var2;
  306.    }
  307.  
  308.    protected Color getHighlightColor() {
  309.       return this.highlightColor;
  310.    }
  311.  
  312.    protected Component getLowestValueLabel() {
  313.       Dictionary var1 = this.slider.getLabelTable();
  314.       Component var2 = null;
  315.       if (var1 != null) {
  316.          Enumeration var3 = var1.keys();
  317.          if (var3.hasMoreElements()) {
  318.             int var4;
  319.             int var5;
  320.             for(var4 = (Integer)var3.nextElement(); var3.hasMoreElements(); var4 = Math.min(var5, var4)) {
  321.                var5 = (Integer)var3.nextElement();
  322.             }
  323.  
  324.             var2 = (Component)var1.get(new Integer(var4));
  325.          }
  326.       }
  327.  
  328.       return var2;
  329.    }
  330.  
  331.    public Dimension getMaximumSize(JComponent var1) {
  332.       Dimension var2 = this.getPreferredSize(var1);
  333.       if (this.slider.getOrientation() == 1) {
  334.          var2.height = 32767;
  335.       } else {
  336.          var2.width = 32767;
  337.       }
  338.  
  339.       return var2;
  340.    }
  341.  
  342.    public Dimension getMinimumHorizontalSize() {
  343.       return MINIMUM_HORIZONTAL_SIZE;
  344.    }
  345.  
  346.    public Dimension getMinimumSize(JComponent var1) {
  347.       this.recalculateIfInsetsChanged();
  348.       Dimension var2;
  349.       if (this.slider.getOrientation() == 1) {
  350.          var2 = new Dimension(this.getMinimumVerticalSize());
  351.          var2.width = this.insetCache.left + this.insetCache.right;
  352.          var2.width += this.focusInsets.left + this.focusInsets.right;
  353.          var2.width += this.trackRect.width + this.tickRect.width + this.labelRect.width;
  354.       } else {
  355.          var2 = new Dimension(this.getMinimumHorizontalSize());
  356.          var2.height = this.insetCache.top + this.insetCache.bottom;
  357.          var2.height += this.focusInsets.top + this.focusInsets.bottom;
  358.          var2.height += this.trackRect.height + this.tickRect.height + this.labelRect.height;
  359.       }
  360.  
  361.       return var2;
  362.    }
  363.  
  364.    public Dimension getMinimumVerticalSize() {
  365.       return MINIMUM_VERTICAL_SIZE;
  366.    }
  367.  
  368.    public Dimension getPreferredHorizontalSize() {
  369.       return PREFERRED_HORIZONTAL_SIZE;
  370.    }
  371.  
  372.    public Dimension getPreferredSize(JComponent var1) {
  373.       this.recalculateIfInsetsChanged();
  374.       Dimension var2;
  375.       if (this.slider.getOrientation() == 1) {
  376.          var2 = new Dimension(this.getPreferredVerticalSize());
  377.          var2.width = this.insetCache.left + this.insetCache.right;
  378.          var2.width += this.focusInsets.left + this.focusInsets.right;
  379.          var2.width += this.trackRect.width + this.tickRect.width + this.labelRect.width;
  380.       } else {
  381.          var2 = new Dimension(this.getPreferredHorizontalSize());
  382.          var2.height = this.insetCache.top + this.insetCache.bottom;
  383.          var2.height += this.focusInsets.top + this.focusInsets.bottom;
  384.          var2.height += this.trackRect.height + this.tickRect.height + this.labelRect.height;
  385.       }
  386.  
  387.       return var2;
  388.    }
  389.  
  390.    public Dimension getPreferredVerticalSize() {
  391.       return PREFERRED_VERTICAL_SIZE;
  392.    }
  393.  
  394.    protected Color getShadowColor() {
  395.       return this.shadowColor;
  396.    }
  397.  
  398.    protected Dimension getThumbSize() {
  399.       Dimension var1 = new Dimension();
  400.       if (this.slider.getOrientation() == 1) {
  401.          var1.width = 20;
  402.          var1.height = 11;
  403.       } else {
  404.          var1.width = 11;
  405.          var1.height = 20;
  406.       }
  407.  
  408.       return var1;
  409.    }
  410.  
  411.    protected int getTickLength() {
  412.       return 8;
  413.    }
  414.  
  415.    protected int getWidthOfHighValueLabel() {
  416.       Component var1 = this.getHighestValueLabel();
  417.       int var2 = 0;
  418.       if (var1 != null) {
  419.          var2 = var1.getPreferredSize().width;
  420.       }
  421.  
  422.       return var2;
  423.    }
  424.  
  425.    protected int getWidthOfLowValueLabel() {
  426.       Component var1 = this.getLowestValueLabel();
  427.       int var2 = 0;
  428.       if (var1 != null) {
  429.          var2 = var1.getPreferredSize().width;
  430.       }
  431.  
  432.       return var2;
  433.    }
  434.  
  435.    protected int getWidthOfWidestLabel() {
  436.       Dictionary var1 = this.slider.getLabelTable();
  437.       int var2 = 0;
  438.       Component var4;
  439.       if (var1 != null) {
  440.          for(Enumeration var3 = var1.keys(); var3.hasMoreElements(); var2 = Math.max(var4.getPreferredSize().width, var2)) {
  441.             var4 = (Component)var1.get(var3.nextElement());
  442.          }
  443.       }
  444.  
  445.       return var2;
  446.    }
  447.  
  448.    protected void installDefaults(JSlider var1) {
  449.       LookAndFeel.installBorder(var1, "Slider.border");
  450.       LookAndFeel.installColors(var1, "Slider.background", "Slider.foreground");
  451.       this.highlightColor = UIManager.getColor("Slider.highlight");
  452.       this.shadowColor = UIManager.getColor("Slider.shadow");
  453.       this.focusColor = UIManager.getColor("Slider.focus");
  454.       this.focusInsets = (Insets)UIManager.get("Slider.focusInsets");
  455.    }
  456.  
  457.    protected void installKeyboardActions(JSlider var1) {
  458.       ((JComponent)var1).registerKeyboardAction(new ActionScroller(this, var1, 1, false), KeyStroke.getKeyStroke(39, 0), 0);
  459.       ((JComponent)var1).registerKeyboardAction(new ActionScroller(this, var1, 1, false), KeyStroke.getKeyStroke("KP_RIGHT"), 0);
  460.       ((JComponent)var1).registerKeyboardAction(new ActionScroller(this, var1, -1, false), KeyStroke.getKeyStroke(40, 0), 0);
  461.       ((JComponent)var1).registerKeyboardAction(new ActionScroller(this, var1, -1, false), KeyStroke.getKeyStroke("KP_DOWN"), 0);
  462.       ((JComponent)var1).registerKeyboardAction(new ActionScroller(this, var1, -1, true), KeyStroke.getKeyStroke(34, 0), 0);
  463.       ((JComponent)var1).registerKeyboardAction(new ActionScroller(this, var1, -1, false), KeyStroke.getKeyStroke(37, 0), 0);
  464.       ((JComponent)var1).registerKeyboardAction(new ActionScroller(this, var1, -1, false), KeyStroke.getKeyStroke("KP_LEFT"), 0);
  465.       ((JComponent)var1).registerKeyboardAction(new ActionScroller(this, var1, 1, false), KeyStroke.getKeyStroke(38, 0), 0);
  466.       ((JComponent)var1).registerKeyboardAction(new ActionScroller(this, var1, 1, false), KeyStroke.getKeyStroke("KP_UP"), 0);
  467.       ((JComponent)var1).registerKeyboardAction(new ActionScroller(this, var1, 1, true), KeyStroke.getKeyStroke(33, 0), 0);
  468.       ((JComponent)var1).registerKeyboardAction(new ActionScroller(this, var1, -2, true), KeyStroke.getKeyStroke(36, 0), 0);
  469.       ((JComponent)var1).registerKeyboardAction(new ActionScroller(this, var1, 2, true), KeyStroke.getKeyStroke(35, 0), 0);
  470.    }
  471.  
  472.    protected void installListeners(JSlider var1) {
  473.       ((Component)var1).addMouseListener(this.trackListener);
  474.       ((Component)var1).addMouseMotionListener(this.trackListener);
  475.       ((Component)var1).addFocusListener(this.focusListener);
  476.       ((Component)var1).addComponentListener(this.componentListener);
  477.       ((JComponent)var1).addPropertyChangeListener(this.propertyChangeListener);
  478.       var1.getModel().addChangeListener(this.changeListener);
  479.    }
  480.  
  481.    public void installUI(JComponent var1) {
  482.       this.slider = (JSlider)var1;
  483.       this.slider.setEnabled(this.slider.isEnabled());
  484.       this.slider.setOpaque(true);
  485.       this.isDragging = false;
  486.       this.trackListener = this.createTrackListener(this.slider);
  487.       this.changeListener = this.createChangeListener(this.slider);
  488.       this.componentListener = this.createComponentListener(this.slider);
  489.       this.focusListener = this.createFocusListener(this.slider);
  490.       this.scrollListener = this.createScrollListener(this.slider);
  491.       this.propertyChangeListener = this.createPropertyChangeListener(this.slider);
  492.       this.installDefaults(this.slider);
  493.       this.installListeners(this.slider);
  494.       this.installKeyboardActions(this.slider);
  495.       this.scrollTimer = new Timer(100, this.scrollListener);
  496.       this.scrollTimer.setInitialDelay(300);
  497.       this.insetCache = this.slider.getInsets();
  498.       this.focusRect = new Rectangle();
  499.       this.contentRect = new Rectangle();
  500.       this.labelRect = new Rectangle();
  501.       this.tickRect = new Rectangle();
  502.       this.trackRect = new Rectangle();
  503.       this.thumbRect = new Rectangle();
  504.       this.calculateGeometry();
  505.    }
  506.  
  507.    public void paint(Graphics var1, JComponent var2) {
  508.       this.recalculateIfInsetsChanged();
  509.       Rectangle var3 = var1.getClipBounds();
  510.       if (this.slider.getPaintTrack() && var3.intersects(this.trackRect)) {
  511.          this.paintTrack(var1);
  512.       }
  513.  
  514.       if (this.slider.getPaintTicks() && var3.intersects(this.tickRect)) {
  515.          this.paintTicks(var1);
  516.       }
  517.  
  518.       if (this.slider.getPaintLabels() && var3.intersects(this.labelRect)) {
  519.          this.paintLabels(var1);
  520.       }
  521.  
  522.       if (this.slider.hasFocus() && var3.intersects(this.focusRect)) {
  523.          this.paintFocus(var1);
  524.       }
  525.  
  526.       if (var3.intersects(this.thumbRect)) {
  527.          this.paintThumb(var1);
  528.       }
  529.  
  530.    }
  531.  
  532.    public void paintFocus(Graphics var1) {
  533.       var1.setColor(this.getFocusColor());
  534.       BasicGraphicsUtils.drawDashedRect(var1, this.focusRect.x, this.focusRect.y, this.focusRect.width, this.focusRect.height);
  535.    }
  536.  
  537.    protected void paintHorizontalLabel(Graphics var1, int var2, Component var3) {
  538.       int var4 = this.xPositionForValue(var2);
  539.       int var5 = var4 - var3.getPreferredSize().width / 2;
  540.       var1.translate(var5, 0);
  541.       var3.paint(var1);
  542.       var1.translate(-var5, 0);
  543.    }
  544.  
  545.    public void paintLabels(Graphics var1) {
  546.       Rectangle var2 = this.labelRect;
  547.       Dictionary var3 = this.slider.getLabelTable();
  548.       if (var3 != null) {
  549.          Enumeration var4 = var3.keys();
  550.  
  551.          while(var4.hasMoreElements()) {
  552.             Integer var5 = (Integer)var4.nextElement();
  553.             Component var6 = (Component)var3.get(var5);
  554.             if (this.slider.getOrientation() == 0) {
  555.                var1.translate(0, var2.y);
  556.                this.paintHorizontalLabel(var1, var5, var6);
  557.                var1.translate(0, -var2.y);
  558.             } else {
  559.                var1.translate(var2.x, 0);
  560.                this.paintVerticalLabel(var1, var5, var6);
  561.                var1.translate(-var2.x, 0);
  562.             }
  563.          }
  564.       }
  565.  
  566.    }
  567.  
  568.    protected void paintMajorTickForHorizSlider(Graphics var1, Rectangle var2, int var3) {
  569.       var1.drawLine(var3, 0, var3, var2.height - 2);
  570.    }
  571.  
  572.    protected void paintMajorTickForVertSlider(Graphics var1, Rectangle var2, int var3) {
  573.       var1.drawLine(0, var3, var2.width - 2, var3);
  574.    }
  575.  
  576.    protected void paintMinorTickForHorizSlider(Graphics var1, Rectangle var2, int var3) {
  577.       var1.drawLine(var3, 0, var3, var2.height / 2 - 1);
  578.    }
  579.  
  580.    protected void paintMinorTickForVertSlider(Graphics var1, Rectangle var2, int var3) {
  581.       var1.drawLine(0, var3, var2.width / 2 - 1, var3);
  582.    }
  583.  
  584.    public void paintThumb(Graphics var1) {
  585.       Rectangle var2 = this.thumbRect;
  586.       int var3 = var2.width;
  587.       int var4 = var2.height;
  588.       var1.translate(var2.x, var2.y);
  589.       if (this.slider.isEnabled()) {
  590.          var1.setColor(this.slider.getBackground());
  591.       } else {
  592.          var1.setColor(this.slider.getBackground().darker());
  593.       }
  594.  
  595.       if (!this.slider.getPaintTicks()) {
  596.          var1.fillRect(0, 0, var3, var4);
  597.          var1.setColor(Color.black);
  598.          var1.drawLine(0, var4 - 1, var3 - 1, var4 - 1);
  599.          var1.drawLine(var3 - 1, 0, var3 - 1, var4 - 1);
  600.          var1.setColor(this.highlightColor);
  601.          var1.drawLine(0, 0, 0, var4 - 2);
  602.          var1.drawLine(1, 0, var3 - 2, 0);
  603.          var1.setColor(this.shadowColor);
  604.          var1.drawLine(1, var4 - 2, var3 - 2, var4 - 2);
  605.          var1.drawLine(var3 - 2, 1, var3 - 2, var4 - 3);
  606.       } else if (this.slider.getOrientation() == 0) {
  607.          int var5 = var3 / 2;
  608.          var1.fillRect(1, 1, var3 - 3, var4 - 1 - var5);
  609.          Polygon var6 = new Polygon();
  610.          var6.addPoint(1, var4 - var5);
  611.          var6.addPoint(var5 - 1, var4 - 1);
  612.          var6.addPoint(var3 - 2, var4 - 1 - var5);
  613.          var1.fillPolygon(var6);
  614.          var1.setColor(this.highlightColor);
  615.          var1.drawLine(0, 0, var3 - 2, 0);
  616.          var1.drawLine(0, 1, 0, var4 - 1 - var5);
  617.          var1.drawLine(0, var4 - var5, var5 - 1, var4 - 1);
  618.          var1.setColor(Color.black);
  619.          var1.drawLine(var3 - 1, 0, var3 - 1, var4 - 2 - var5);
  620.          var1.drawLine(var3 - 1, var4 - 1 - var5, var3 - 1 - var5, var4 - 1);
  621.          var1.setColor(this.shadowColor);
  622.          var1.drawLine(var3 - 2, 1, var3 - 2, var4 - 2 - var5);
  623.          var1.drawLine(var3 - 2, var4 - 1 - var5, var3 - 1 - var5, var4 - 2);
  624.       } else {
  625.          int var7 = var4 / 2;
  626.          var1.fillRect(1, 1, var3 - 1 - var7, var4 - 3);
  627.          Polygon var8 = new Polygon();
  628.          var8.addPoint(var3 - var7 - 1, 0);
  629.          var8.addPoint(var3 - 1, var7);
  630.          var8.addPoint(var3 - 1 - var7, var4 - 2);
  631.          var1.fillPolygon(var8);
  632.          var1.setColor(this.highlightColor);
  633.          var1.drawLine(0, 0, 0, var4 - 2);
  634.          var1.drawLine(1, 0, var3 - 1 - var7, 0);
  635.          var1.drawLine(var3 - var7 - 1, 0, var3 - 1, var7);
  636.          var1.setColor(Color.black);
  637.          var1.drawLine(0, var4 - 1, var3 - 2 - var7, var4 - 1);
  638.          var1.drawLine(var3 - 1 - var7, var4 - 1, var3 - 1, var4 - 1 - var7);
  639.          var1.setColor(this.shadowColor);
  640.          var1.drawLine(1, var4 - 2, var3 - 2 - var7, var4 - 2);
  641.          var1.drawLine(var3 - 1 - var7, var4 - 2, var3 - 2, var4 - var7 - 1);
  642.       }
  643.  
  644.       var1.translate(-var2.x, -var2.y);
  645.    }
  646.  
  647.    public void paintTicks(Graphics var1) {
  648.       Rectangle var2 = this.tickRect;
  649.       int var7 = var2.width;
  650.       int var8 = var2.height;
  651.       var1.setColor(this.slider.getBackground());
  652.       var1.fillRect(var2.x, var2.y, var2.width, var2.height);
  653.       var1.setColor(Color.black);
  654.       int var4 = this.slider.getMajorTickSpacing();
  655.       int var5 = this.slider.getMinorTickSpacing();
  656.       if (this.slider.getOrientation() == 0) {
  657.          var1.translate(0, var2.y);
  658.          int var11 = this.slider.getMinimum();
  659.          int var12 = 0;
  660.          if (this.slider.getMinorTickSpacing() > 0) {
  661.             while(var11 <= this.slider.getMaximum()) {
  662.                var12 = this.xPositionForValue(var11);
  663.                this.paintMinorTickForHorizSlider(var1, var2, var12);
  664.                var11 += this.slider.getMinorTickSpacing();
  665.             }
  666.          }
  667.  
  668.          if (this.slider.getMajorTickSpacing() > 0) {
  669.             for(int var13 = this.slider.getMinimum(); var13 <= this.slider.getMaximum(); var13 += this.slider.getMajorTickSpacing()) {
  670.                var12 = this.xPositionForValue(var13);
  671.                this.paintMajorTickForHorizSlider(var1, var2, var12);
  672.             }
  673.          }
  674.  
  675.          var1.translate(0, -var2.y);
  676.       } else {
  677.          var1.translate(var2.x, 0);
  678.          int var14 = this.slider.getMinimum();
  679.          int var18 = 0;
  680.          if (this.slider.getMinorTickSpacing() > 0) {
  681.             while(var14 <= this.slider.getMaximum()) {
  682.                var18 = this.yPositionForValue(var14);
  683.                this.paintMinorTickForVertSlider(var1, var2, var18);
  684.                var14 += this.slider.getMinorTickSpacing();
  685.             }
  686.          }
  687.  
  688.          if (this.slider.getMajorTickSpacing() > 0) {
  689.             for(int var15 = this.slider.getMinimum(); var15 <= this.slider.getMaximum(); var15 += this.slider.getMajorTickSpacing()) {
  690.                var18 = this.yPositionForValue(var15);
  691.                this.paintMajorTickForVertSlider(var1, var2, var18);
  692.             }
  693.          }
  694.  
  695.          var1.translate(-var2.x, 0);
  696.       }
  697.  
  698.    }
  699.  
  700.    public void paintTrack(Graphics var1) {
  701.       Rectangle var7 = this.trackRect;
  702.       if (this.slider.getOrientation() == 0) {
  703.          int var6 = this.trackBuffer;
  704.          int var3 = var7.height / 2 - 2;
  705.          int var4 = var7.width;
  706.          var1.translate(var7.x, var7.y + var3);
  707.          var1.setColor(this.getShadowColor());
  708.          var1.drawLine(0, 0, var4 - 1, 0);
  709.          var1.drawLine(0, 1, 0, 2);
  710.          var1.setColor(this.getHighlightColor());
  711.          var1.drawLine(0, 3, var4, 3);
  712.          var1.drawLine(var4, 0, var4, 3);
  713.          var1.setColor(Color.black);
  714.          var1.drawLine(1, 1, var4 - 2, 1);
  715.          var1.translate(-var7.x, -(var7.y + var3));
  716.       } else {
  717.          int var8 = this.trackBuffer;
  718.          int var2 = var7.width / 2 - 2;
  719.          int var5 = var7.height;
  720.          var1.translate(var7.x + var2, var7.y);
  721.          var1.setColor(this.getShadowColor());
  722.          var1.drawLine(0, 0, 0, var5 - 1);
  723.          var1.drawLine(1, 0, 2, 0);
  724.          var1.setColor(this.getHighlightColor());
  725.          var1.drawLine(3, 0, 3, var5);
  726.          var1.drawLine(0, var5, 3, var5);
  727.          var1.setColor(Color.black);
  728.          var1.drawLine(1, 1, 1, var5 - 2);
  729.          var1.translate(-(var7.x + var2), -var7.y);
  730.       }
  731.  
  732.    }
  733.  
  734.    protected void paintVerticalLabel(Graphics var1, int var2, Component var3) {
  735.       int var4 = this.yPositionForValue(var2);
  736.       int var5 = var4 - var3.getPreferredSize().height / 2;
  737.       var1.translate(0, var5);
  738.       var3.paint(var1);
  739.       var1.translate(0, -var5);
  740.    }
  741.  
  742.    protected void recalculateIfInsetsChanged() {
  743.       Insets var1 = this.slider.getInsets();
  744.       if (!var1.equals(this.insetCache)) {
  745.          this.insetCache = var1;
  746.          this.calculateGeometry();
  747.       }
  748.  
  749.    }
  750.  
  751.    public void scrollByBlock(int var1) {
  752.       JSlider var2 = this.slider;
  753.       synchronized(var2){}
  754.  
  755.       try {
  756.          int var4 = this.slider.getValue();
  757.          int var5 = this.slider.getMaximum() / 10;
  758.          int var6 = var5 * (var1 > 0 ? 1 : -1);
  759.          this.slider.setValue(var4 + var6);
  760.       } catch (Throwable var8) {
  761.          throw var8;
  762.       }
  763.  
  764.    }
  765.  
  766.    public void scrollByUnit(int var1) {
  767.       JSlider var2 = this.slider;
  768.       synchronized(var2){}
  769.  
  770.       try {
  771.          int var4 = this.slider.getValue();
  772.          int var5 = var1 > 0 ? 1 : -1;
  773.          this.slider.setValue(var4 + var5);
  774.       } catch (Throwable var7) {
  775.          throw var7;
  776.       }
  777.  
  778.    }
  779.  
  780.    protected void scrollDueToClickInTrack(int var1) {
  781.       this.scrollByBlock(var1);
  782.    }
  783.  
  784.    public void setThumbLocation(int var1, int var2) {
  785.       unionRect.setBounds(this.thumbRect);
  786.       this.thumbRect.setLocation(var1, var2);
  787.       SwingUtilities.computeUnion(this.thumbRect.x, this.thumbRect.y, this.thumbRect.width, this.thumbRect.height, unionRect);
  788.       this.slider.repaint(unionRect.x, unionRect.y, unionRect.width, unionRect.height);
  789.    }
  790.  
  791.    protected void uninstallKeyboardActions(JSlider var1) {
  792.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(39, 0));
  793.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke("KP_RIGHT"));
  794.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(40, 0));
  795.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke("KP_DOWN"));
  796.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(34, 0));
  797.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(37, 0));
  798.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke("KP_LEFT"));
  799.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(38, 0));
  800.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke("KP_UP"));
  801.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(33, 0));
  802.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(36, 0));
  803.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(35, 0));
  804.    }
  805.  
  806.    protected void uninstallListeners(JSlider var1) {
  807.       ((Component)var1).removeMouseListener(this.trackListener);
  808.       ((Component)var1).removeMouseMotionListener(this.trackListener);
  809.       ((Component)var1).removeFocusListener(this.focusListener);
  810.       ((Component)var1).removeComponentListener(this.componentListener);
  811.       ((JComponent)var1).removePropertyChangeListener(this.propertyChangeListener);
  812.       var1.getModel().removeChangeListener(this.changeListener);
  813.    }
  814.  
  815.    public void uninstallUI(JComponent var1) {
  816.       if (var1 != this.slider) {
  817.          throw new IllegalComponentStateException(String.valueOf(this) + " was asked to deinstall() " + var1 + " when it only knows about " + this.slider + ".");
  818.       } else {
  819.          LookAndFeel.uninstallBorder(this.slider);
  820.          this.scrollTimer.stop();
  821.          this.scrollTimer = null;
  822.          this.uninstallListeners(this.slider);
  823.          this.uninstallKeyboardActions(this.slider);
  824.          this.focusInsets = null;
  825.          this.insetCache = null;
  826.          this.focusRect = null;
  827.          this.contentRect = null;
  828.          this.labelRect = null;
  829.          this.tickRect = null;
  830.          this.trackRect = null;
  831.          this.thumbRect = null;
  832.          this.trackListener = null;
  833.          this.changeListener = null;
  834.          this.componentListener = null;
  835.          this.focusListener = null;
  836.          this.scrollListener = null;
  837.          this.propertyChangeListener = null;
  838.          this.slider = null;
  839.       }
  840.    }
  841.  
  842.    public int valueForXPosition(int var1) {
  843.       int var3 = this.slider.getMinimum();
  844.       int var4 = this.slider.getMaximum();
  845.       int var5 = this.trackRect.width;
  846.       int var6 = this.trackRect.x;
  847.       int var7 = this.trackRect.x + (this.trackRect.width - 1);
  848.       int var2;
  849.       if (var1 <= var6) {
  850.          var2 = this.slider.getInverted() ? var4 : var3;
  851.       } else if (var1 >= var7) {
  852.          var2 = this.slider.getInverted() ? var3 : var4;
  853.       } else {
  854.          int var8 = var1 - var6;
  855.          int var9 = var4 - var3;
  856.          double var10 = (double)var9 / (double)var5;
  857.          int var12 = (int)Math.round((double)var8 * var10);
  858.          var2 = this.slider.getInverted() ? var4 - var12 : var3 + var12;
  859.       }
  860.  
  861.       return var2;
  862.    }
  863.  
  864.    public int valueForYPosition(int var1) {
  865.       int var3 = this.slider.getMinimum();
  866.       int var4 = this.slider.getMaximum();
  867.       int var5 = this.trackRect.height;
  868.       int var6 = this.trackRect.y;
  869.       int var7 = this.trackRect.y + (this.trackRect.height - 1);
  870.       int var2;
  871.       if (var1 <= var6) {
  872.          var2 = this.slider.getInverted() ? var3 : var4;
  873.       } else if (var1 >= var7) {
  874.          var2 = this.slider.getInverted() ? var4 : var3;
  875.       } else {
  876.          int var8 = var1 - var6;
  877.          int var9 = var4 - var3;
  878.          double var10 = (double)var9 / (double)var5;
  879.          int var12 = (int)Math.round((double)var8 * var10);
  880.          var2 = this.slider.getInverted() ? var3 + var12 : var4 - var12;
  881.       }
  882.  
  883.       return var2;
  884.    }
  885.  
  886.    protected int xPositionForValue(int var1) {
  887.       int var2 = this.slider.getMinimum();
  888.       int var3 = this.slider.getMaximum();
  889.       int var4 = this.trackRect.width;
  890.       int var5 = this.slider.getMaximum() - this.slider.getMinimum();
  891.       double var6 = (double)var4 / (double)var5;
  892.       int var8 = this.trackRect.x;
  893.       int var9 = this.trackRect.x + (this.trackRect.width - 1);
  894.       int var10;
  895.       if (!this.slider.getInverted()) {
  896.          var10 = (int)((long)var8 + Math.round(var6 * (double)(var1 - var2)));
  897.       } else {
  898.          var10 = (int)((long)var9 - Math.round(var6 * (double)(var1 - var2)));
  899.       }
  900.  
  901.       var10 = Math.max(var8, var10);
  902.       var10 = Math.min(var9, var10);
  903.       return var10;
  904.    }
  905.  
  906.    protected int yPositionForValue(int var1) {
  907.       int var2 = this.slider.getMinimum();
  908.       int var3 = this.slider.getMaximum();
  909.       int var4 = this.trackRect.height;
  910.       int var5 = this.slider.getMaximum() - this.slider.getMinimum();
  911.       double var6 = (double)var4 / (double)var5;
  912.       int var8 = this.trackRect.y;
  913.       int var9 = this.trackRect.y + (this.trackRect.height - 1);
  914.       int var10;
  915.       if (!this.slider.getInverted()) {
  916.          var10 = (int)((long)var8 + Math.round(var6 * (double)(var3 - var1)));
  917.       } else {
  918.          var10 = (int)((long)var8 + Math.round(var6 * (double)(var1 - var2)));
  919.       }
  920.  
  921.       var10 = Math.max(var8, var10);
  922.       var10 = Math.min(var9, var10);
  923.       return var10;
  924.    }
  925. }
  926.